<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>isAdjacent</title>
<style type="text/css">
	body {background-color: white; color: black; font-family:sans-serif; font-size:medium;}
	a:link {color: #3300ff;}
	a:visited {color: #663399;}
	a:hover {color:#0099ff;}
	a:active {color: #0066cc;}
	a.button {text-decoration:none;}
	
	table.nav  {background-color: #dbddff;}
	table.body {margin-top:2ex; margin-bottom:2ex;}
	table.programlistingindent {margin-left:32px;}
	
	img { margin-bottom:0px; margin-top:0px;}
	tt {margin-left:0.5em; margin-right:0.5em; font-weight:lighter;}
	
	p {margin-top:0ex;}
	p.synopsis {margin-left:32px;}
	p.programlistingindent {margin-left:32px;}
	p.citetitle {margin-left:2em;}
	
	ul ul {list-style-type:square;}
	ul li p {margin-top:0ex; margin-bottom:.5ex; padding:0}
	ol li p {margin-top:0ex; margin-bottom:.5ex; padding:0}
	
	h1.reftitle {color:#a90000;}
	h1.reftitle {font-size:3.7ex; margin-top:0; margin-bottom:0; font-weight:bold}
	h1.title {color:black; font-size:4ex; margin-top:1ex; font-weight:bold}
	h2.title {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:3ex}
	h3.title {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:2.5ex}
	h4.title {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:2ex}
	h2 {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:2.5ex}
	h3 {color:#bd0000; margin-top:1ex; margin-bottom:.9ex; font-weight:bold; font-size:2ex} 
	
	pre.programlisting {margin-left:32px;}
	pre.synopsis {margin-left:32px;}
	
	
	.categorytitle {margin-top:8px; padding-top:0px;}
	.categorylist {background-color: #e1e6f2;}
 	</style>
</head>
<body>
<a name="top_of_page"></a><p style="font-size:1px;"></p>
<h1 class="reftitle">isAdjacent</h1>
<h2>Purpose</h2>
<p>Test if a polyhedron shares a facet with another polyhedron.</p>
<h2>Syntax</h2>
<pre class="synopsis">ts = P.isAdjacent(Q)</pre>
<pre class="synopsis">ts = isAdjacent(P,Q)</pre>
<pre class="synopsis">[ts, iP, iQ] = isAdjacent(P,Q,fP,fQ)</pre>
<h2>Description</h2>
<p></p>
        Return true if the polyhedron <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent1.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent1.png"> has a facet to facet property with the polyhedron <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent2.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent2.png">.
        Both polyhedrons must be in H-representation. If they are not, the irredundant
        H-representation will be computed.
        
        Basically, the function tests if polyhedra <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent3.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent3.png"> and <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent4.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent4.png"> are adjacent by
        solving LP problem consecutively for each facet. The polyhedra are declared as adjacent if
        their intersection is of dimension <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent5.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent5.png"> and if the facet of polyhedron <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent6.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent6.png"> is also
        a facet for the polyhedron <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent7.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent7.png">.
        
        If you want to test just specific 
        facets, you can provide them in <tt>fP</tt> and <tt>fQ</tt> arguments.                 
        
	<h2>Input Arguments</h2>
<table cellspacing="0" class="body" cellpadding="4" border="0" width="100%">
<colgroup>
<col width="31%">
<col width="69%">
</colgroup>
<tbody>
<tr valign="top">
<td><tt>P</tt></td>
<td>
<p></p>Polyhedron in H-representation<p>
	    		Class: <tt>Polyhedron</tt></p>
</td>
</tr>
<tr valign="top">
<td><tt>Q</tt></td>
<td>
<p></p>Polyhedron in H-representation<p>
	    		Class: <tt>Polyhedron</tt></p>
</td>
</tr>
<tr valign="top">
<td><tt>fP</tt></td>
<td>
<p></p>Index of a facet to test from polyhedron <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent8.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent8.png">.<p>
	    		Class: <tt>double</tt></p>
</td>
</tr>
<tr valign="top">
<td><tt>fQ</tt></td>
<td>
<p></p>Index of a facet to test from polyhedron <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent9.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent9.png">.<p>
	    		Class: <tt>double</tt></p>
</td>
</tr>
</tbody>
</table>
<h2>Output Arguments</h2>
<table cellspacing="0" class="body" cellpadding="4" border="0" width="100%">
<colgroup>
<col width="31%">
<col width="69%">
</colgroup>
<tbody>
<tr valign="top">
<td><tt>ts</tt></td>
<td>
<p></p>Logical statement if the polyhedron <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent10.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent10.png"> is in a face to face property with <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent11.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent11.png">.<p>
	    		Class: <tt>logical</tt><p>Allowed values:</p><ul>
<li><tt>true</tt></li>
<li><tt>false</tt></li>
</ul></p>
</td>
</tr>
<tr valign="top">
<td><tt>iP</tt></td>
<td>
<p></p>Index of a facet from polyhedron <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent12.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent12.png"> that is common with polyhedron <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent13.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent13.png">.<p>
	    		Class: <tt>double</tt></p>
</td>
</tr>
<tr valign="top">
<td><tt>iQ</tt></td>
<td>
<p></p>Index of a facet from polyhedron <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent14.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent14.png"> that is common with polyhedron <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent15.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent15.png">.<p>
	    		Class: <tt>double</tt></p>
</td>
</tr>
</tbody>
</table>
<h2>Example(s)</h2>
<h3>Example 
				1</h3>Create two polyhedra <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent16.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent16.png"> and <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent17.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent17.png">.<pre class="programlisting"> H1 = [ 0.8905, 0.23614, 10;
            -0.055625, 0.030184, 0;
            -0.21887, -0.06688, 0;
            0, -1, 10;
            1,  0, 10;
            0,  1,  5;
        0,  1, 20]; </pre>
<pre class="programlisting"></pre>
<pre class="programlisting"> H2 = [0.055625, -0.030184, 0;
            -0.053731, -0.010858, 0;
        0,  1,  10];</pre>
<pre class="programlisting"></pre>
<pre class="programlisting"> P = Polyhedron('H',H1); </pre>
<pre class="programlisting"></pre>
<pre class="programlisting"> Q = Polyhedron('H',H2); </pre>
<pre class="programlisting"></pre> Plot the polyhedrons. <pre class="programlisting"> plot([P,Q]); </pre>
<pre class="programlisting"></pre>
<p class="programlistingindent"><img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent_img_1.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent_img_1.png" width="60%"></p> The polyhedrons are touching but are not adjacent because the common part is a facet of <tt>P</tt> but not a facet of <tt>Q</tt>. <pre class="programlisting"> P.isAdjacent(Q) </pre>
<pre class="programlisting">
ans =

     0

</pre> If the polyhedrons are touching on the facet, they are neighbors that can be checked by <tt>isNeighbor</tt> method. <pre class="programlisting"> P.isNeighbor(Q) </pre>
<pre class="programlisting">
ans =

     1

</pre>
<h3>Example 
				2</h3>Create two polyhedra <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent18.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent18.png"> and <img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent19.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent19.png">.<pre class="programlisting"> H1 = [ 0.8905, 0.23614, 10;
            -0.055625, 0.030184, 0;
            -0.21887, -0.06688, 0;
            0, -1, 10;
            1,  0, 10;
            0,  1,  5;
        0,  1, 20]; </pre>
<pre class="programlisting"></pre>
<pre class="programlisting"> H2 = [ 1.84286377 -1 0;
               1.05619465 1 7.865634;
              -4.9485172  -1 0];</pre>
<pre class="programlisting"></pre>
<pre class="programlisting"> P = Polyhedron('H',H1); </pre>
<pre class="programlisting"></pre>
<pre class="programlisting"> Q = Polyhedron('H',H2); </pre>
<pre class="programlisting"></pre> Plot the polyhedrons. <pre class="programlisting"> plot([P,Q]); </pre>
<pre class="programlisting"></pre>
<p class="programlistingindent"><img src="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent_img_2.png" alt="../../../../../../fig/mpt/modules/geometry/sets/@Polyhedron/isadjacent_img_2.png" width="60%"></p> The polyhedra share the same facet so they are in face to face property and declared as adjacent.
            The indices of the common facet are returned in variables <tt>iP</tt> and <tt>iQ</tt>. 
        <pre class="programlisting"> [ts, iP, iQ] = P.isAdjacent(Q) </pre>
<pre class="programlisting">
ts =

     1


iP =

     2


iQ =

     1

</pre>
<h2>See Also</h2>
<a href="./isneighbor.html">isneighbor</a><p></p>
<table class="nav" summary="Navigation aid" border="0" width="100%" cellpadding="0" cellspacing="0"><tr valign="top">
<td align="left" width="20">
<a href="contains.html" class="button">&#9664;</a>  </td>
<td align="left">contains</td>
<td>  </td>
<td align="right">projection</td>
<td align="right" width="20"><a href="projection.html" class="button">&#9654;</a></td>
</tr></table>
<br><p>©  <b>2010-2013</b>     Martin Herceg: ETH Zurich,    <a href="mailto:herceg@control.ee.ethz.ch">herceg@control.ee.ethz.ch</a></p>
</body>
</html>
